package com.sourcetrip.my.inter;


import com.sourcetrip.utils.Visitor;

/**
 * @author: ZhouBert
 * @date: 2020/12/22
 * @description:	集合的接口
 * 经常用于去重
 * --
 * 实现：
 * 1.通过 链表/动态数组 实现：ListSet;
 * 2.通过 二叉搜索树（AVL/红黑树） 实现：TreeSet
 */
public interface Set<E> {
	/**
	 * 集合中 容量大小
	 * @return
	 */
	int size();

	/**
	 * 集合是否为空
	 * @return
	 */
	boolean isEmpty();

	/**
	 * 清空集合
	 */
	void clear();

	/**
	 * 是否包含元素
	 * @param element
	 * @return
	 */
	boolean contains(E element);

	/**
	 * 添加元素
	 * @param element
	 */
	void add(E element);

	/**
	 * 删除元素
	 * @param element
	 */
	void remove(E element);

	/**
	 * 遍历集合里的所有元素
	 * TODO:由于 动态数组/链表 具有索引的概念，所以不需要遍历的接口
	 * @param visitor
	 */
	void traversal(Visitor<E> visitor);

}
